package com.sml.contorller;

import com.sml.pojo.Category;
import com.sml.pojo.Result;
import com.sml.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/category")
public class CategoryController {

    @Autowired
    private CategoryService categoryService;

    /**
     * 新增文章分类
     *
     * @param category 文章分类对象
     * @return 响应结果对象
     */
    @PostMapping //没有添加映射路径，通过请求方式区分请求路径  @Validated(Category.Add.class)校验时指定要校验的分组
    public Result<String> add(@RequestBody @Validated(Category.Add.class) Category category) {
        //实体参数校验
        //调用service层方法，添加文章分类
        categoryService.add(category);
        return Result.success();
    }

    /**
     * 查询所有文章分类
     *
     * @return 响应结果对象
     */
    @GetMapping
    public Result<List<Category>> list() {
        //调用service层方法，查询文章分类列表
        List<Category> cs = categoryService.list();
        return Result.success(cs);
    }

    /**
     * 获取文章分类列表详情
     *
     * @param id 文章分类id
     * @return 响应结果对象
     */
    @GetMapping("/detail")
    public Result<Category> detail(@RequestParam Integer id) {
        Category category = categoryService.findById(id);
        return Result.success(category);
    }

    /**
     * 更新文章分类列表
     *
     * @param category 分类对象
     * @return 响应结果对象
     */
    @PutMapping// @Validated(Category.Add.class)校验时指定要校验的分组
    public Result<String> update(@RequestBody @Validated(Category.Update.class) Category category) {
        //参数校验 id 不能为空 categoryName 分类名称不能为空 categoryAlias 分类别名不能为空
        categoryService.update(category);
        return Result.success();
    }
}
